package com.ruoyi.web.sso.mapper;

import java.util.List;

import com.ruoyi.system.domain.SysUserRole;
import com.ruoyi.web.sso.domain.StaffRole;
import com.ruoyi.web.sso.domain.vo.StaffRoleList;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

/**
 * 用户和角色关联Mapper接口
 * 
 * @author ruoyi
 * @date 2021-10-28
 */
public interface StaffRoleMapper 
{
    /**
     * 查询用户和角色关联
     * 
     * @param staffId 用户和角色关联主键
     * @return 用户和角色关联
     */
    public List<StaffRole> selectStaffRoleByStaffId(String staffId);

    /**
     * 查询用户和角色关联列表
     * 
     * @param staffRole 用户和角色关联
     * @return 用户和角色关联集合
     */
    public List<StaffRole> selectStaffRoleList(StaffRole staffRole);

    /**
     * 新增用户和角色关联
     * 
     * @param staffRole 用户和角色关联
     * @return 结果
     */
    public int insertStaffRole(StaffRole staffRole);

    /**
     * 修改用户和角色关联
     * 
     * @param staffRole 用户和角色关联
     * @return 结果
     */
    public int updateStaffRole(StaffRole staffRole);

    /**
     * 删除用户和角色关联
     * 
     * @param staffId 用户和角色关联主键
     * @return 结果
     */
    public int deleteStaffRoleByStaffId(String staffId);

    /**
     * 批量删除用户和角色关联
     * 
     * @param staffIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteStaffRoleByStaffIds(String[] staffIds);


    /**
     * 查询是否存在
     * @param staffRole
     * @return
     */
    StaffRole selectIsExistence(StaffRole staffRole);


    /**
     * 用户id查询默认权限
     * @return
     */
   StaffRole selectByDefault(String staffId);

    /**
     * 用户和系统id 查询集合列表
     * @return
     */
    List<StaffRoleList> selectStaffAndPlatformIdByList(StaffRole staffRole);


    /**
     * 批量新增用户角色信息
     *
     * @return 结果
     */
    public int batchStaffRole(List<StaffRole> list);



    /**
     * 删除用户和角色关联信息
     *
     * @param staffRole 用户和角色关联信息
     * @return 结果
     */
    public int deleteStaffRoleInfo(StaffRole staffRole);


    public int deleteAllRole( String roleId);

    int deleteAllStaffId(@Param("staffId") String staffId,@Param("areaId") String areaId);
    /**
     * 批量取消授权用户角色
     *
     * @param roleId 角色ID
     * @param staffIds 需要删除的用户数据ID
     * @return 结果
     */
    public int deleteStaffRoleInfos(@Param("roleId") String roleId, @Param("staffIds") String[] staffIds);

    @Select("select staff_id staffId,role_id roleId ,is_default isDefault from staff_role where role_id = #{roleId}  and  staff_id =#{staffId}  ")
    StaffRole getStaffRole(@Param("roleId") String roleId, @Param("staffId") String staffId);

    @Select("select sr.staff_id staffId,sr.role_id roleId ,sr.is_default isDefault from `staff_role` sr LEFT JOIN role r  on sr.role_id = r.role_id WHERE" +
            "  r.area_id  = #{areaId}  and  sr.staff_id =#{staffId}  ")
    List<StaffRole> getAreaRoleList(@Param("areaId") String areaId, @Param("staffId") String staffId);


}
